package com.example.designpatterns.chain;

/**
 * PriorityHandler类 - 基于请求优先级的处理者
 * 展示责任链模式的另一种实现方式，基于请求的优先级而非类型
 */
public class PriorityHandler extends Handler {
    
    // 该处理者能处理的最低优先级和最高优先级
    private int minPriority;
    private int maxPriority;
    
    /**
     * 创建一个优先级范围的处理者
     * @param name 处理者名称
     * @param minPriority 能处理的最低优先级（包含）
     * @param maxPriority 能处理的最高优先级（包含）
     */
    public PriorityHandler(String name, int minPriority, int maxPriority) {
        super(name);
        this.minPriority = minPriority;
        this.maxPriority = maxPriority;
    }
    
    @Override
    protected boolean canHandle(Request request) {
        // 检查请求优先级是否在该处理者的处理范围内
        int priority = request.getPriority();
        return priority >= minPriority && priority <= maxPriority;
    }
    
    @Override
    protected void doHandle(Request request) {
        System.out.println(name + " 处理优先级为 " + request.getPriority() + " 的请求: " + request.getMessage());
        System.out.println("请求已根据优先级处理，采取适当的响应措施");
        request.setHandled(true);
    }
    
    /**
     * 获取该处理者能处理的最低优先级
     * @return 最低优先级
     */
    public int getMinPriority() {
        return minPriority;
    }
    
    /**
     * 获取该处理者能处理的最高优先级
     * @return 最高优先级
     */
    public int getMaxPriority() {
        return maxPriority;
    }
} 